Wesbos - Fun with Canvas
🙂 사실 그렇게 자주 사용할것 같지는 않지만, 배워두면 좋을 것 같은 ..?
Javascript를 이용한 그리기 도구 기능 구현 챕터다
로직
- canvas태그를 통해 그림판을 브라우저에 깔아준다
- canvas의 개념적 정의를 ‘2d’로 설정한다 : canvas.getContext(‘2d’)
- canvas에 이벤트리스너를 부여한다.
- 캔버스 내에서 마우스 움직임에 따라 그림이 그려질 수 있도록 ctx설정을 한다 (그리기 속성과 위치값 설정)
그림판 깔기
canvas 태그
💡
<canvas></canvas>
와 같은 형태로 쓰이며, id값을 부여해 사용해주는 것이 바람직하다.
canvas태그에 id값을 #draw
로 부여해뒀다. 이를 활용!
1 | const canvas = document.querySelector('#draw'); |
canvas태그 불러오기 및 기본설정 (렌더링 컨텍스트)
💡 canvas만 브라우저에 펼쳐져 있다고 그림을 그릴 수 있는게 아니다.
**getContext()**를 통해 렌더링 컨텍스트까지 canvas에 노출시켜줘야
그리기 함수나 렌더링 컨텍스트 등을 활용할 수 있다.
그리기 도구를 지정해준다고 생각하면 이해하기 편할 것이다.
1 | const ctx = canvas.getContext('2d'); |
이벤트리스너 적용 및 함수 생성
💡 canvas가 이벤트를 감지할 수 있도록 addEventListener와 그에 따른 함수를 생성해줘야 한다.
1 | //마우스의 움직임을 감지 |
💡 이제 draw함수를 생성해보자 !
1 | //일단 만들어만 놓자 |
ctx를 통한 그리기 속성 세팅
💡 그림을 그려야하기 때문에, 먼저 그리기 도구들을 세팅해주자
ctx세팅을 위한 함수 및 기능들은 아래 표에 정리해두었다.
1 | ctx.strokeStyle = '#BADA55'; |
ctx를 통한 위치값 설정 및 그리기 기능 구현
💡 거의 다 왔다…..
이제 그림을 그릴 수 있도록 xy 좌표값과 그에 해당하는 기본 변수값들을 지정해줘야 한다.
1 | //마우스를 클릭한 상태로 움직였을 때만 그리기가 가능하도록 isDrawing을 설정해줬다. |
1 | //마우스를 눌렀을 때 x와 y값이 입력되도록 설정! |
offsetX & offsetY
💡 offsetX : 이벤트의 대상이 되는 객체 내에서의 상대적 마우스 “x좌표” 위치를 나타냄
offsetY : 이벤트의 대상이 되는 객체 내에서의 상대적 마우스 “y좌표” 위치를 나타냄
최종 완성 코드
1 | const canvas = document.querySelector('#draw'); |
Wesbos - Fun with Canvas
https://hoonjoo-park.github.io/javascript/wesbos/08. Fun with Canvas/